package com.liang.leetcode.list;

public class ListNodeUtil {
    public static void main(String[] args) {

    }

    // 创建链表方法
    public static ListNode createLinkedList(int[] arr) {
        // 如果数组为空，则返回null
        if (arr == null || arr.length == 0) {
            return null;
        }

        // 创建头节点，并保存头节点的引用
        ListNode head = new ListNode(arr[0]);
        ListNode tail = head;

        // 依次创建数组中的元素对应的节点，并链接在一起
        for (int i = 1; i < arr.length; i++) {
            ListNode newNode = new ListNode(arr[i]);
            tail.next = newNode; // 将新节点链接到当前节点的后面
            tail = newNode; // 更新尾节点为新创建的节点
        }

        // 返回头节点
        return head;
    }

    // 打印链表方法
    public static void printLinkedList(ListNode head) {
        ListNode cur = head;
        while (cur != null) {
            System.out.print(cur.val + " -> ");
            cur = cur.next;
        }
        System.out.println("null");
    }
}

/**
 * 链表节点定义
 */
class ListNode {
    // 结点的值
    int val;

    // 下一个结点
    ListNode next;

    // 节点的构造函数(无参)
    public ListNode() {
    }

    // 节点的构造函数(有一个参数)
    public ListNode(int val) {
        this.val = val;
    }

    // 节点的构造函数(有两个参数)
    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}